package com.stone.serverless.sdk.loader;

//import com.stone.serverless.sdk.domain.RouterInfo;

import com.stone.serverless.sdk.domain.ServiceInfo;

import java.net.URL;
import java.util.List;
import java.util.Map;

/**
 * @Description: TODO
 * @Author: MECHREVO
 * @Date: 2022/1/21 19:16
 * @Version: 1.0.0
 */
public interface ModuleClassLoader {
    void resolveDependencies();

    String getComponentName();

    String getDescription();


    void registerRouter();

    void refresh();


    void uninstallServices(String componentName, String version);

    void uninstall();

    URL[] getUrls();

    String getUrl();

    Object getComponentRunner();

    <T> T getEnvironment(String key);

    Class<?> loadClass(String classPath) throws ClassNotFoundException;

    String getVersion();

    List<ServiceInfo> getServices();

    Object getComponentConsumer();

    Object getComponentProvider();

    ClassLoader getClassloader();

    List<String> routerStatistics();

    List<Map<String, String>> servicesStatistics();

    Object getInstance(String className);

    JarLoadService getJarLoadService();

    void publishInstalled();

    void loaderComponentClasses();

    void callRunner();

    void initContainer();
    //void close();
}
